#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Core;
using Cephei.Core.Generic;
using Microsoft.FSharp.Core;
namespace Cephei.QL.Math.Optimization
{
    /// <summary> 
	/// ! Fletcher-Reeves-Polak-Ribiere algorithm adapted from Numerical Recipes in C, 2nd edition.  User has to provide line-search method and optimization end criteria. Search direction \f$ d_i = - f'(x_i) + c_i*d_{i-1} \f$ where \f$ c_i = ||f'(x_i)||^2/||f'(x_{i-1})||^2 \f$ and \f$ d_1 = - f'(x_1) \f$
	/// </summary>
    [Guid ("710AF128-9D27-4e36-A0AE-BCFC78F1DCA8"),ComVisible(true)]
	public interface IConjugateGradient : Cephei.QL.Math.Optimization.ILineSearchBasedMethod
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
    }   

    /// <summary> 
	/// ! Fletcher-Reeves-Polak-Ribiere algorithm adapted from Numerical Recipes in C, 2nd edition.  User has to provide line-search method and optimization end criteria. Search direction \f$ d_i = - f'(x_i) + c_i*d_{i-1} \f$ where \f$ c_i = ||f'(x_i)||^2/||f'(x_{i-1})||^2 \f$ and \f$ d_1 = - f'(x_1) \f$ Factory
	/// </summary>
   	[ComVisible(true)]
    public interface IConjugateGradient_Factory 
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        /// <summary> 
		/// 
		/// </summary>
	    IConjugateGradient Create (Microsoft.FSharp.Core.FSharpOption<Cephei.QL.Math.Optimization.ILineSearch> lineSearch);
    }
}

